package main

import (
	"fmt"
	"net/url"
	"os"
)

// 编写一个程序：
// 在 Go 标准库里，有个函数可以解析网址（golang.org/pkg/net/url/#Parse）：
// 使用一个非法网址传递到 url.Parse 函数，把发生的错误显示出来。
// 使用 %#v 和 Printf 打印错误，看看都显示什么。
// 然后执行 *url.Error 类型断言，来访问和打印底层结构体的字段和内容。

func main() {
	u, err := url.Parse("https://a b.com/")

	if err != nil {
		fmt.Println(err)
		fmt.Printf("%#v\n", err)

		if e, ok := err.(*url.Error); ok {
			fmt.Println("Op:", e.Op)
			fmt.Println("URL:", e.URL)
			fmt.Println("Err:", e.Err)
		}
		os.Exit(1)
	}

	fmt.Println(u)
}
